package cn.gobang.action;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import cn.gobang.util.ResultUtils;

@ParentPackage("struts-default")
@Namespace("/")
@Controller
@Scope("prototype")
public class AutoGotAction implements ApplicationAware,SessionAware,ServletResponseAware{
	private Map<String,Object> application;
	private Map<String, Object> session;
	private HttpServletResponse response;
	
	@Action(value="autoget")
	public void execute() throws IOException{
		List<String[]> lists = (List<String[]>)application.get("userlists");
		String[] each=lists.get(getNowListIndex());//获得每一个用户的数据
		
		Map<String,String> map=new HashMap<String,String>();
		map.put("x", each[3]);
		map.put("y", each[4]);
//		map.put("winner",each[5]);
		
		String strindex=each[2];
		String nowindex=getNowStringArrayIndex()+"";
		
		if(nowindex.equals(strindex)){
			if(!"".equals(each[5])){//不是空字符串，那么表示肯定有结果了
				if(!nowindex.equals(each[5])){//得出输家
					map.put("loser", "很遗憾，你输了");
				}
			}
			ResultUtils.toJson(response, map);
		}
		
	}
	/**
	 * 获得当前用户在每个List的String[]中占得位置
	 * @return 一个Int类型的数据，<br/>
	 * 			如果为0,表示占据第一个位置<br/>
	 * 			如果为1,表示占据第二个位置<br/>
	 * 			如果为-1,表示没有当前用户
	 */
	public int getNowStringArrayIndex(){
		List<String[]> lists = (List<String[]>)application.get("userlists");
		for(int lindex=0;lindex<lists.size();lindex++){//循环外层List
        	String[] each=lists.get(lindex);
        	for(int iindex=0;iindex<2;iindex++){//循环内部String[],只需要比较第一个和第二个，应为string[]存储数据的形式是{"用户1"，"用户2","状态码",目前的x值，目前的y值，目前是谁赢了}
        		if(session.get("username").equals(each[iindex])){
        			return iindex;
        		}
        	}
        }
		return -1;
	}
	/**
	 * 获得当前用户所在String[]的List集合的排序位置
	 * @return 一个Int类型的数据<br/>
	 * 			返回-1表示未找到数据
	 */
	public int getNowListIndex(){
		List<String[]> lists = (List<String[]>)application.get("userlists");
		for(int lindex=0;lindex<lists.size();lindex++){//循环外层List
        	String[] each=lists.get(lindex);
        	for(int iindex=0;iindex<2;iindex++){//循环内部String[],只需要比较第一个和第二个，应为string[]存储数据的形式是{"用户1"，"用户2","状态码",目前的x值，目前的y值，目前是谁赢了}
        		if(session.get("username").equals(each[iindex])){
        			return lindex;
        		}
        	}
        }
		return -1;
	}
	
	public void setApplication(Map<String, Object> application) {
		this.application=application;
	}
	public void setSession(Map<String, Object> session) {
		this.session=session;
	}
	public void setServletResponse(HttpServletResponse response) {
		this.response=response;
	}
}
